import re
import sys

def 提取导入模块(file_path):
    # 正则表达式模式
    导入模式 = re.compile(r'^\s*(?:import|from\s+\S+\s+import)\s+(\S+)')
    
    导入模块 = set()
    从模块 = set()

    # 获取系统内置模块
    内置模块 = set(sys.builtin_module_names)

    with open(file_path, 'r', encoding='utf-8') as file:
        for 行 in file:
            # 匹配 import 和 from ... import 语句
            匹配 = 导入模式.match(行)
            if 匹配:
                模块 = 匹配.group(1)
                # 如果模块不是内置模块，则添加
                if 模块 not in 内置模块:
                    if 行.startswith('import'):
                        导入模块.add(模块)
                    else:
                        从模块.add(模块)

    return 导入模块, 从模块

def 写入需求文件(导入模块, 从模块, output_file):
    # 写入需求到文件
    with open(output_file, 'w', encoding='utf-8') as file:
        内容 = sorted(导入模块 | 从模块)
        file.writelines(f"{模块}\n" for 模块 in 内容)
    return 内容

# 主程序入口
if __name__ == "__main__":
    file_path = input('输入文件地址：').strip(' "\'\n')  # 去掉引号和空白字符
    output_file = 'requirements.txt'

    导入模块, 从模块 = 提取导入模块(file_path)
    内容 = 写入需求文件(导入模块, 从模块, output_file)
    
    # 打印写入的内容
    print("需求已写入 requirements.txt")
    print("写入的内容：")
    print("\n".join(内容))